package com.calvin.study.demos.file;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

import cn.hutool.core.util.StrUtil;

/**
 * 将文件夹中，文件名‘-’两边的值交换。例如：“周杰伦-晴天” -> “晴天-周杰伦”
 * 1.读取文件夹中所有文件
 * 2.处理文件名包含 - 符号的文件
 * 3.将文件名中的两边值位置互换
 * 4.重命名文件
 */
public class File001 {
	
	public static void main(String[] args) {
		try {
			//遍历指定目录中所有文件
			Files.walkFileTree(Paths.get("D:\\Downloads\\QQ浏览器\\MUSIC\\aaa\\"), new SimpleFileVisitor<Path>() {
				//visitFile-对每个文件进行处理
				@Override
				public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
					String fileName = StrUtil.trim(file.getFileName().toString());
					int index = fileName.lastIndexOf(".");
					if(index<=0) {
						return FileVisitResult.CONTINUE;
					}
			        //截取文件名
			        String namePart = (index == -1) ? fileName : fileName.substring(0, index);
				    String extension = (index == -1) ? "" : fileName.substring(index);
				    if(".mp3".equals(extension)) {
				    	if(fileName.contains("-") || fileName.contains("_")) {
							String swappedFileName = swapFileName(fileName,namePart,extension);//-两边的值互换
							Path newFilePath = file.resolveSibling(swappedFileName);
	                        Files.move(file, newFilePath);//重命名文件
	                        System.out.println("Renamed: " + fileName + " to " + swappedFileName);
						}
				    }
					return FileVisitResult.CONTINUE;
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		} 

	}
	
	private static String swapFileName(String fileName,String namePart,String extension) {
		String[] parts = null;
		if (fileName.contains("-")) {
			parts = namePart.split("-");
		} else if (fileName.contains("_")) {
			parts = namePart.split("_");
		}
		if (parts.length == 2) {
			return StrUtil.trim(parts[1]) + "-" + StrUtil.trim(parts[0]) + extension;
		}
		return fileName; // 如果文件名格式不正确，保持原样
	}

}
